------- Comment #41 from howarth at nitro dot med dot uc dot edu  2009-09-25 
23:51 -------
Iain,
   I just puzzled out a solution for keeping the symbols constantly updated for
libgcc-ext*. We make the following changes to your patch...

1) The files gcc/config/rs6000/darwin-libgcc-ext-32B-10.4.ver and
gcc/config/rs6000/darwin-libgcc-ext-64B-10.4.ver are made to be exact copies of
gcc/config/rs6000/darwin-libgcc.10.4.ver
2) The files gcc/config/rs6000/darwin-libgcc-ext-32B-10.5.ver and
gcc/config/rs6000/darwin-libgcc-ext-64B-10.5.ver are made to be exact copies of
gcc/config/rs6000/darwin-libgcc.10.5.ver
3) The files gcc/config/i386/darwin-libgcc-ext-32B-10.4.ver and
gcc/config/i386/darwin-libgcc-ext-64B-10.4.ver are made to be exact copies of
gcc/config/i386/darwin-libgcc.10.4.ver
4) The files gcc/config/i386/darwin-libgcc-ext-32B-10.5.ver and
gcc/config/i386/darwin-libgcc-ext-64B-10.5.ver are made to be exact copies of
gcc/config/i386/darwin-libgcc.10.5.ver
5) The section of your patch...

+EXLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
+       -install_name @exlibdir@/$(EXLIB_SONAME) \
+       -single_module -o @multilib_dir@/$(EXLIB_SONAME) \
+       -Wl,-exported_symbols_list,@exlib_map_file@ \
+       $(EXLIB_VERSTRING) \
+       @multilib_flags@ @exlib_objs@ @exlib_other_lib@ $(SHLIB_LC)
+

is change to...

+EXLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
+       -install_name @exlibdir@/$(EXLIB_SONAME) \
+       -single_module -o @multilib_dir@/$(EXLIB_SONAME) \
+       -Wl,-unexported_symbols_list,@exlib_map_file@ \
+       $(EXLIB_VERSTRING) \
+       @multilib_flags@ @exlib_objs@ @exlib_other_lib@ $(SHLIB_LC)
+

This seems to work here on x86_64-apple-darwin10. All of the symbols left in
libgcc-ext not in the symbol list to unexport are left exported automatically.
No need to assemble or maintain any lists.
The remaining question is can your patch be refactored to eliminate the need
for so many *.ver files now that they shared common contents with
darwin-libgcc.10.4.ver and darwin-libgcc.10.5.ver. That is, can reduced the
list of new *.ver files to just darwin-libgcc-ext-10.4.ver and
darwin-libgcc-ext-10.5.ver.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39888

Reply via email to