For the following code...
public class b
public static final int FOOBAR = 555;
..I would expect to see FOOBAR in .rodata. However gcj currently places this in .data.
If you poke through the .jar.so files we have in Fedora Core you'll see big chunks of .data that should actually .rodata.
Note there are ticks for final static data to be changed IIRC. I don't know how useful they are or if they really are valid.
If you fix this, you need to also make sure the Method.set* never modifies the data under any circumstances. Attempts at modification will result in SIGSEGV which is usually converted to NPE. The real exception should probably be IllegalAccessException if modification is attempted.
(In reply to comment #1)
> Note there are ticks for final static data to be changed IIRC. I don't know
> how useful they are or if they really are valid.
put it to .rodata is very useful to embebed system,this will release many memory useage.
can anybody tell me how to change the final form .data to .rodata.
which files have the check in gcc?