Raised This Month: $12 Target: $400
 3% 

-fno-exceptions and throw


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Flasher
Senior Member
Join Date: Apr 2008
Old 12-09-2008 , 16:24   -fno-exceptions and throw
Reply With Quote #1

I have a problem writing module for linux version of hl server.

If I build with -fno-exceptions I get this error:
acc/include/AccSupport.h:47: error: exception handling disabled, use -fexceptions to enable
If I build with -fexceptions module is not loading in server (I doesn't spoted any message about why it is not loaded, but it is absent in meta list output)
AccSupport.h is include from foreign library. This library seem using exceptions.

Can I somehow solve this?

PS Under Windows (for windows version of hlds) this module compiles and works.

Last edited by Flasher; 12-11-2008 at 03:59.
Flasher is offline
sawce
The null pointer exception error and virtual machine bug
Join Date: Oct 2004
Old 12-11-2008 , 00:48   Re: -fno-exceptions and throw
Reply With Quote #2

The likely cause of it not loading with exceptions enabled is because the version of libstdc++ the binary is compiled against does not match the version on the machine, or libstdc++ may not even be on the machine.
__________________
fyren sucks
sawce is offline
Flasher
Senior Member
Join Date: Apr 2008
Old 12-11-2008 , 03:37   Re: -fno-exceptions and throw
Reply With Quote #3

Quote:
Originally Posted by sawce View Post
The likely cause of it not loading with exceptions enabled is because the version of libstdc++ the binary is compiled against does not match the version on the machine, or libstdc++ may not even be on the machine.
I am run server on the same machine where I compiled the module. But any, thanks for helping. I will have a look at libstdc++.
Look at this thread:
http://forums.alliedmods.net/showthread.php?t=16859
-fno-exceptions mentioned there. May be AMXX doesn't allow modules with enabled exceptions? Can I somehow mix exceptions enabled code with wrapping it with non exception code?
I use this Makefile:
Code:
#(C)2004-2005 AMX Mod X Development Team
#(C)2008 Lev Shisterov
# Makefile written by David "BAILOPAN" Anderson
# Makefile corrected by Lev Shisterov

HLSDK = ../../../hlsdk-2.3-p3/multiplayer
MM_ROOT = ../../../metamod-1.19/metamod

### EDIT BELOW FOR OTHER PROJECTS ###

OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing
DEBUG_FLAGS = -g -ggdb3
CPP = gcc-4.1
NAME = icqbot

BIN_SUFFIX_32 = amxx_i386.so
BIN_SUFFIX_64 = amxx_amd64.so

OBJECTS = sdk/amxxmodule.cpp icqbot.cpp functions.cpp client.cpp PosixThreads.cpp

LINK = 

INCLUDE = -I. -Iacc/include -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \
    -I$(MM_ROOT) -I$(HLSDK)/common -Isdk

GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)

ifeq "$(GCC_VERSION)" "4"
        OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
endif

ifeq "$(DEBUG)" "true"
    BIN_DIR = Debug
    CFLAGS = $(DEBUG_FLAGS)
else
    BIN_DIR = Release
    CFLAGS = $(OPT_FLAGS)
endif

CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc

ifeq "$(AMD64)" "true"
    BINARY = $(NAME)_$(BIN_SUFFIX_64)
    CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64 
else
    BINARY = $(NAME)_$(BIN_SUFFIX_32)
    CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32
    OPT_FLAGS += -march=i586
endif

OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)

$(BIN_DIR)/%.o: %.cpp
    $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<

all:
    mkdir -p $(BIN_DIR)
    mkdir -p $(BIN_DIR)/sdk
    $(MAKE) icqbot

amd64:
    $(MAKE) all AMD64=true

icqbot: $(OBJ_LINUX)
    $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)

debug:    
    $(MAKE) all DEBUG=true

default: all

clean:
    rm -rf Release/sdk/*.o
    rm -rf Release/*.o
    rm -rf Release/$(NAME)_$(BIN_SUFFIX_32)
    rm -rf Release/$(NAME)_$(BIN_SUFFIX_64)
    rm -rf Debug/sdk/*.o
    rm -rf Debug/*.o
    rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32)
    rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64)
If I compile with -fno-exceptions (warked no- with red in Makefile in CFLAGS) I got compilation error. With -fexceptions module is not loaded by AMXX.
Looked and found libstdc++.so.6.0.8 in /usr/bin. I am using debian 2.6.18-6 if this make sence.

Last edited by Flasher; 12-11-2008 at 06:40.
Flasher is offline
Flasher
Senior Member
Join Date: Apr 2008
Old 12-11-2008 , 12:42   Re: -fno-exceptions and throw
Reply With Quote #4

Update:
I tried to build cstrike module (it served me as example in the past). And has a luck. But this lead me to mistake. I used "meta list" to spot if module is loaded. Cstrike was shown in list.
Then I found that nvault module has -fexceptions option for build in 1.8.0 version. Tried to compile and load it. And meta list doesn't show it is loaded.
Some digging in Internet and I found that I was wrong. So I have to use "amxx modules".
Here is the output:
Code:
meta list
Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] AMX Mod X        RUN   -    amxmodx_mm_i386.  v1.8.1.3  ini  Start ANY
 [ 2] CStrike          RUN   -    cstrike_amxx_i38  v1.8.0.3  pl1  ANY   ANY
2 plugins, 2 running
amxx modules
Currently loaded modules:
      name                    version     author               status
 [ 1] nVault                  1.8.0.3660  AMX Mod X Dev Team   running
 [ 2] CStrike                 1.8.0.3660  AMX Mod X Dev Team   running
2 modules, 2 correct
Flasher is offline
Flasher
Senior Member
Join Date: Apr 2008
Old 12-11-2008 , 13:08   Re: -fno-exceptions and throw
Reply With Quote #5

Finally found were I was wrong: not linked with libstdc++.
In nvault Makefile found link to libstdc++.
Added this link to my test project with -fexceptions and get it loaded:
Code:
meta list
Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] AMX Mod X        RUN   -    amxmodx_mm_i386.  v1.8.1.3  ini  Start ANY
 [ 2] CStrike          RUN   -    cstrike_amxx_i38  v1.8.0.3  pl1  ANY   ANY
 [ 3] Testing          RUN   -    testing_amxx_i38  v0.1      pl1  ANY   ANY
3 plugins, 3 running
amxx modules
Currently loaded modules:
      name                    version     author               status
 [ 1] nVault                  1.8.0.3660  AMX Mod X Dev Team   running
 [ 2] CStrike                 1.8.0.3660  AMX Mod X Dev Team   running
 [ 3] Testing                 0.1         Lev                  running
3 modules, 3 correct
Will try in my code.
Flasher is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:31.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode