[patch] Fix oddity in personality routine

Jack Howarth howarth@bromo.med.uc.edu
Fri Dec 4 03:01:00 GMT 2009


On Thu, Dec 03, 2009 at 09:25:11PM +0000, Andrew Haley wrote:
> Boehm, Hans wrote:
> >> From: Jack Howarth
> >> Do you think that -Wl,-allow_stack_execute needs to be 
> >> passed even more widely than on just ecjx_LDFLAGS? Any 
> >> suggestions as to where I should be passing it? Perhaps on 
> >> something like LIBJAVA_LDFLAGS_NOUNDEF at the toplevel of 
> >> libjava? Or should we even be building libffi and boehm-gc 
> >> with that as well?
> >>
> > I haven't been following this completely, but:
> > 
> > The GC also has a compile-time flag NO_EXECUTE_PERMISSION, which affects heap executability.
>> I think that's probably not the cause, since libffi allocates memory itself.
>> Andrew.

Andrew,
 On reflection, shouldn't something like...
Index: libjava/Makefile.in
===================================================================
--- libjava/Makefile.in	(revision 154965)
+++ libjava/Makefile.in	(working copy)
@@ -8500,8 +8500,7 @@
 	$(am__append_28)
 gij_SOURCES = 
 gij_LDFLAGS = -rpath $(dbexecdir) -rpath $(toolexeclibdir) \
-	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) \
-	$(extra_gij_ldflags) 
+	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
 
 gij_LINK = $(GCJLINK) $(gij_LDFLAGS)
 gij_LDADD = -L$(here)/.libs libgij.la
Index: libjava/Makefile.am
===================================================================
--- libjava/Makefile.am	(revision 154965)
+++ libjava/Makefile.am	(working copy)
@@ -294,7 +294,7 @@
 
 LTLDFLAGS = $(shell $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
 GCJLINK = $(LIBTOOL) --tag=GCJ $(LIBTOOLFLAGS) --mode=link $(GCJ) -L$(here) \
-	 $(JC1FLAGS) $(LTLDFLAGS) -o $@
+	 $(extra_gij_ldflags) $(JC1FLAGS) $(LTLDFLAGS) -o $@
 GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
 GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
 LIBLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXX) -L$(here) \
@@ -1065,8 +1065,7 @@
 ## need this because we are explicitly using libtool to link using the
 ## `.la' file.
 gij_LDFLAGS = -rpath $(dbexecdir) -rpath $(toolexeclibdir) \
-	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags) \
-	$(extra_gij_ldflags) 
+	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
 gij_LINK = $(GCJLINK) $(gij_LDFLAGS)
 ## See jv_convert_LDADD.
 gij_LDADD = -L$(here)/.libs libgij.la
...be appropriate to make sure that all java executables on darwin are linked with
-Wl,-allow_stack_execute? However, this raises the question of why the gcj and ecj1
compilers aren't doing the same? As I understand this, any executables created
with libraries containing code that executes on the stack (like libgcj) needs
to link the binaries with -Wl,-allow_stack_execute. Shouldn't this apply to
gcj and ecj1 as well since they create executables which are linked against
libgcj? Wouldn't we have to do this by adding the missing -allow_stack_execute flag
to libjava/libgcj.spec.in?
 Jack


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /