aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cgcc
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-09-27 23:11:37 +0200
committerChristopher Li <sparse@chrisli.org>2017-10-03 00:44:48 -0400
commitcc58fdcfb8569d56e14e97959d42d9305a2b55dd (patch)
tree573dfe6d3aa45270d9f47f39823cf370e28dbe44 /cgcc
parent4b7b6b63f6069a387971276cf84db6cfafb2b4fe (diff)
downloadsparse-dev-cc58fdcfb8569d56e14e97959d42d9305a2b55dd.tar.gz
fix cgcc ELF version for ppc64/pcc64le
Commit e0306fe0 "cgcc: teach cgcc about ppc64[le]" add support for PPC64 to cgcc by adding the needed options like '-m64' & '-m{little,big}-endian' and defines likes '-D__PPC64__=1'. In this commit the defined '-D_CALL_ELF=2' was also added but the value of 2 is for ELF v2 ABI, normally used for ppc64le, while the older ELF ABI, normally used for plain ppc64 should use '-D_CALL_ELF=2'. Fix this by using the value of 1 or 2 for '_CALL_ELF' depending if the architecture is ppc64 or ppc64le. Fixes: e0306fe0b725af6e2e7ff59d7f0d99c96315791a Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Tested-by: Uwe Kleine-König <uwe@kleine-koenig.org> Signed-off-by: Christopher Li <sparse@chrisli.org>
Diffstat (limited to 'cgcc')
-rwxr-xr-xcgcc5
1 files changed, 2 insertions, 3 deletions
diff --git a/cgcc b/cgcc
index d4bec1fb..16b37310 100755
--- a/cgcc
+++ b/cgcc
@@ -289,7 +289,6 @@ sub add_specs {
} elsif ($spec eq 'ppc64') {
return (' -D__powerpc__=1 -D__PPC__=1 -D_STRING_ARCH_unaligned=1' .
' -D__powerpc64__=1 -D__PPC64__=1' .
- ' -D_CALL_ELF=2' .
' -m64' .
&float_types (1, 1, 21, [24,8], [53,11], [113,15]));
} elsif ($spec eq 's390x') {
@@ -327,9 +326,9 @@ sub add_specs {
} elsif ($arch =~ /^(ppc)$/i) {
return &add_specs ('ppc');
} elsif ($arch =~ /^(ppc64)$/i) {
- return &add_specs ('ppc64') . ' -mbig-endian';
+ return &add_specs ('ppc64') . ' -mbig-endian -D_CALL_ELF=1';
} elsif ($arch =~ /^(ppc64le)$/i) {
- return &add_specs ('ppc64') . ' -mlittle-endian';
+ return &add_specs ('ppc64') . ' -mlittle-endian -D_CALL_ELF=2';
} elsif ($arch =~ /^(s390x)$/i) {
return &add_specs ('s390x');
} elsif ($arch =~ /^(sparc64)$/i) {