mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-18 14:56:07 +00:00
Bug 190537: build OS/2 DLLs using the map files to control symbol export.
The patch is contributed by Javier Pedemonte <pedemont@us.ibm.com>. Modified files: coreconf/OS2.mk coreconf/rules.mk nss/lib/ckfw/nssck.api
This commit is contained in:
parent
db7833ec52
commit
3d99d3f6a8
@ -86,10 +86,16 @@ DSO_LDOPTS = -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO
|
||||
SHLIB_LDSTARTFILE =
|
||||
SHLIB_LDENDFILE =
|
||||
ifdef MAPFILE
|
||||
# Add LD options to restrict exported symbols to those in the map file
|
||||
MKSHLIB += $(MAPFILE)
|
||||
endif
|
||||
# Change PROCESS to put the mapfile in the correct format for this platform
|
||||
PROCESS_MAP_FILE = copy $(LIBRARY_NAME).def $@
|
||||
PROCESS_MAP_FILE = \
|
||||
echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@; \
|
||||
echo PROTMODE >> $@; \
|
||||
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@; \
|
||||
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@; \
|
||||
echo EXPORTS >> $@; \
|
||||
grep -v ';+' $(LIBRARY_NAME).def | grep -v ';-' | \
|
||||
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
|
||||
|
||||
endif #NO_SHARED_LIB
|
||||
|
||||
@ -147,6 +153,17 @@ DSO_LDOPTS =
|
||||
# DLL_SUFFIX = .dll
|
||||
SHLIB_LDSTARTFILE =
|
||||
SHLIB_LDENDFILE =
|
||||
ifdef MAPFILE
|
||||
MKSHLIB += $(MAPFILE)
|
||||
endif
|
||||
PROCESS_MAP_FILE = \
|
||||
echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@; \
|
||||
echo PROTMODE >> $@; \
|
||||
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@; \
|
||||
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@; \
|
||||
echo EXPORTS >> $@; \
|
||||
grep -v ';+' $(LIBRARY_NAME).def | grep -v ';-' | \
|
||||
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
|
||||
endif #NO_SHARED_LIB
|
||||
|
||||
OS_CFLAGS = /Q /qlibansi /Gd /Gm /Su4 /Mp /Tl-
|
||||
@ -159,20 +176,22 @@ MOZ_COMPONENT_NSPR_LIBS=-L$(DIST)/lib $(NSPR_LIBS)
|
||||
NSPR_INCLUDE_DIR =
|
||||
|
||||
|
||||
DLLFLAGS = /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
|
||||
EXEFLAGS = -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
|
||||
LDFLAGS = /FREE /NOE /LINENUMBERS /nologo
|
||||
|
||||
ifdef BUILD_OPT
|
||||
OPTIMIZER = -Oi -G5
|
||||
OPTIMIZER = /O+ /Gl+ /G5 /qarch=pentium
|
||||
DEFINES += -UDEBUG -U_DEBUG -DNDEBUG
|
||||
DLLFLAGS = /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
|
||||
EXEFLAGS = -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
|
||||
OBJDIR_TAG = _OPT
|
||||
LDFLAGS = /FREE /NODEBUG /NOE /LINENUMBERS /nologo
|
||||
LDFLAGS += /NODEBUG /OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA
|
||||
else
|
||||
OS_CFLAGS += /Ti+
|
||||
DEFINES += -DDEBUG -D_DEBUG -DDEBUGPRINTS #HCT Need += to avoid overidding manifest.mn
|
||||
DLLFLAGS = /DEBUG /DLL /O:$@ /INC:_dllentry /MAP:$(@:.dll=.map)
|
||||
EXEFLAGS = -DEBUG -PMTYPE:VIO -OUT:$@ -MAP:$(@:.exe=.map) -nologo -NOE
|
||||
DLLFLAGS += /DE
|
||||
EXEFLAGS += /DE
|
||||
OBJDIR_TAG = _DBG
|
||||
LDFLAGS = /FREE /DE /NOE /LINENUMBERS /nologo
|
||||
LDFLAGS += /DE
|
||||
endif # BUILD_OPT
|
||||
|
||||
endif # XP_OS2_VACPP
|
||||
|
@ -312,7 +312,7 @@ endif
|
||||
ifeq ($(OS_TARGET),OS2)
|
||||
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
|
||||
rm -f $@
|
||||
$(IMPLIB) $@ $(patsubst %.lib,%.dll.def,$@)
|
||||
$(IMPLIB) $@ $(SHARED_LIBRARY)
|
||||
$(RANLIB) $@
|
||||
endif
|
||||
|
||||
@ -339,25 +339,8 @@ else
|
||||
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
|
||||
$(LINK_DLL) -MAP $(DLLBASE) $(subst /,\\,$(OBJS) $(SUB_SHLOBJS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $(OS_LIBS) $(LD_LIBS) $(RES))
|
||||
else
|
||||
ifeq ($(OS_TARGET),OS2)
|
||||
@cmd /C "echo LIBRARY $(notdir $(basename $(SHARED_LIBRARY))) INITINSTANCE TERMINSTANCE >$@.def"
|
||||
@cmd /C "echo PROTMODE >>$@.def"
|
||||
@cmd /C "echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@.def"
|
||||
@cmd /C "echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >>$@.def"
|
||||
@cmd /C "echo EXPORTS >>$@.def"
|
||||
$(FILTER) $(OBJS) >>$@.def
|
||||
ifdef SUB_SHLOBJS
|
||||
@echo Number of words in OBJ list = $(words $(SUB_SHLOBJS))
|
||||
@echo If above number is over 100, need to reedit coreconf/rules.mk
|
||||
-$(FILTER) $(wordlist 1,20,$(SUB_SHLOBJS)) >>$@.def
|
||||
-$(FILTER) $(wordlist 21,40,$(SUB_SHLOBJS)) >>$@.def
|
||||
-$(FILTER) $(wordlist 41,60,$(SUB_SHLOBJS)) >>$@.def
|
||||
-$(FILTER) $(wordlist 61,80,$(SUB_SHLOBJS)) >>$@.def
|
||||
-$(FILTER) $(wordlist 81,100,$(SUB_SHLOBJS)) >>$@.def
|
||||
endif
|
||||
endif #OS2
|
||||
ifdef XP_OS2_VACPP
|
||||
$(MKSHLIB) $(DLLFLAGS) $(LDFLAGS) $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS) $@.def
|
||||
$(MKSHLIB) $(DLLFLAGS) $(LDFLAGS) $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
|
||||
else
|
||||
$(MKSHLIB) -o $@ $(OBJS) $(SUB_SHLOBJS) $(LD_LIBS) $(EXTRA_LIBS) $(EXTRA_SHARED_LIBS)
|
||||
endif
|
||||
|
@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
static const char NSSCKAPI_CVS_ID[] = "@(#) $RCSfile: nssck.api,v $ $Revision: 1.3 $ $Date: 2002/05/17 18:57:34 $ $Name: $ ; @(#) $RCSfile: nssck.api,v $ $Revision: 1.3 $ $Date: 2002/05/17 18:57:34 $ $Name: $";
|
||||
static const char NSSCKAPI_CVS_ID[] = "@(#) $RCSfile: nssck.api,v $ $Revision: 1.4 $ $Date: 2003/02/25 01:40:04 $ $Name: $ ; @(#) $RCSfile: nssck.api,v $ $Revision: 1.4 $ $Date: 2003/02/25 01:40:04 $ $Name: $";
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
@ -1874,7 +1874,7 @@ __ADJOIN(MODULE_NAME,C_GetFunctionList)
|
||||
}
|
||||
|
||||
/* This one is always present */
|
||||
#ifdef WIN32
|
||||
#if defined(WIN32) || defined(XP_OS2_VACPP)
|
||||
CK_RV _declspec(dllexport)
|
||||
#else
|
||||
CK_RV CK_ENTRY
|
||||
|
Loading…
x
Reference in New Issue
Block a user