llvm-project/clang/test/Preprocessor
Ulrich Weigand 8afad61a93 [PowerPC] Support ELFv1/ELFv2 ABI selection via -mabi= option
While Clang now supports both ELFv1 and ELFv2 ABIs, their use is currently
hard-coded via the target triple: powerpc64-linux is always ELFv1, while
powerpc64le-linux is always ELFv2.

These are of course the most common scenarios, but in principle it is
possible to support the ELFv2 ABI on big-endian or the ELFv1 ABI on
little-endian systems (and GCC does support that), and there are some
special use cases for that (e.g. certain Linux kernel versions could
only be built using ELFv1 on LE).

This patch implements the Clang side of supporting this, based on the
LLVM commit 214072.  The command line options -mabi=elfv1 or -mabi=elfv2
select the desired ABI if present.  (If not, Clang uses the same default
rules as now.)

Specifically, the patch implements the following changes based on the
presence of the -mabi= option:

In the driver:
- Pass the appropiate -target-abi flag to the back-end
- Select the correct dynamic loader version (/lib64/ld64.so.[12])

In the preprocessor:
- Define _CALL_ELF to the appropriate value (1 or 2)

In the compiler back-end:
- Select the correct ABI in TargetInfo.cpp
- Select the desired ABI for LLVM via feature (elfv1/elfv2)

llvm-svn: 214074
2014-07-28 13:17:52 +00:00
..
Inputs Force a header file input to the headermap test to have different 2014-03-30 14:04:32 +00:00
_Pragma-dependency.c FileCheck'ize tests 2013-01-28 21:43:46 +00:00
_Pragma-dependency2.c
_Pragma-in-macro-arg.c [preprocessor] In Preprocessor::CachingLex() check whether there were more tokens 2012-04-04 02:57:01 +00:00
_Pragma-location.c [-E] Emit a rewritten _Pragma on its own line. 2012-06-15 23:33:51 +00:00
_Pragma-physloc.c FileCheck'ize tests 2013-01-28 21:43:46 +00:00
_Pragma.c PR17359: Fix off-by-one OOB on _Pragma("") and an unescaping bug 2013-09-25 16:42:48 +00:00
aarch64-target-features.c [AArch64] Implement Clang CLI interface proposal about "-march". 2014-07-18 07:03:22 +00:00
arm-acle-6.4.c Preprocessor: improve ACLE 6.4.1, 6.4.2 support 2014-06-15 18:35:07 +00:00
arm-target-features.c test: add missed file in previous commit 2014-06-15 18:48:41 +00:00
assembler-with-cpp.c Lex: Don't restrict legal UCNs when preprocessing assembly 2013-10-21 05:02:28 +00:00
builtin_line.c FileCheck'ize a test 2013-01-28 21:04:29 +00:00
c90.c Preprocessor: don't consider // to be a line comment in -E -std=c89 mode. 2013-03-05 22:51:04 +00:00
c99-6_10_3_3_p4.c
c99-6_10_3_4_p5.c
c99-6_10_3_4_p6.c
c99-6_10_3_4_p7.c
c99-6_10_3_4_p9.c
clang_headers.c This really seems like a boring set of fixes to our tests to make them more 2010-11-16 10:26:08 +00:00
comment_save.c [-E] Emit a rewritten _Pragma on its own line. 2012-06-15 23:33:51 +00:00
comment_save_if.c Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
comment_save_macro.c
cxx_and.cpp
cxx_bitand.cpp
cxx_bitor.cpp
cxx_compl.cpp
cxx_not.cpp
cxx_not_eq.cpp
cxx_oper_keyword.cpp Preprocessor: recover gracefully when C++ operator names are used as macro identifiers 2014-05-31 03:38:17 +00:00
cxx_oper_keyword_ms_compat.cpp Preprocessor: make C++ operator names as macro identifiers a compatible extension 2014-05-31 16:32:22 +00:00
cxx_oper_spelling.cpp FileCheck-ify some clang grep tests that use double quotes 2013-04-10 21:10:39 +00:00
cxx_or.cpp
cxx_true.cpp Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
cxx_xor.cpp
dependencies-and-pp.c Fix failing dependencies-and-pp.c test 2013-04-11 13:43:19 +00:00
directive-invalid.c fix rdar://7683173, rejecting an invalid conditional 2010-02-26 19:42:53 +00:00
disabled-cond-diags.c Migrate tests to -verify 2013-01-26 17:11:39 +00:00
disabled-cond-diags2.c Do not complain about junk on the end of a #endif in a skipped block. Such junk 2012-06-21 00:35:03 +00:00
dump-macros-spacing.c
dump-macros-undef.c Push location through the MacroUndefined PPCallback and use it to print #undefs in -dD mode. (PR7818) 2010-08-07 22:27:00 +00:00
dump-options.c
dump_macros.c
dumptokens_phyloc.c
expr_comma.c
expr_define_expansion.c Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
expr_invalid_tok.c
expr_liveness.c
expr_multichar.c Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
expr_usual_conversions.c convert to -verify mode. 2010-04-07 18:43:41 +00:00
extension-warning.c
feature_tests.c Add the intrinsic __builtin_convertvector 2013-09-18 03:29:45 +00:00
file_to_include.h
first-line-indent.c Fix the indentation of the first line of preprocessor output 2013-01-28 04:37:37 +00:00
function_macro_file.c
function_macro_file.h
has_attribute.c __has_attribute now understands target-specific attributes. So when you ask whether an ARM target has the "interrupt" attribute, it will return true for ARM and MSP430 targets, and false for others. 2014-01-09 22:57:44 +00:00
has_include.c PR15539: Record "evaluating if/elif condition" flag in the right place 2013-03-18 23:22:28 +00:00
hash_line.c Make Preprocessor::Lex non-recursive. 2013-09-19 00:41:32 +00:00
hash_space.c
header_lookup1.c Move a bunch of tests to directly use the CC1 layer. This at least saves 2014-01-15 09:08:07 +00:00
headermap-rel.c [HeaderSearch] Fix issue where if a headermap entry maps the filename to a framework import (non-absolute path) 2014-03-11 06:21:28 +00:00
headermap-rel2.c clang/test/Preprocessor/headermap-rel2.c: Recognize dos path. 2014-03-30 15:09:08 +00:00
if_warning.c Only ignore extra tokens after #else if we skip it, otherwise warn. Fixes rdar://9475098. 2011-05-21 04:26:04 +00:00
ifdef-recover.c Preprocessor: support defined() with operator names for MS compatibility 2014-05-21 06:13:51 +00:00
ignore-pragmas.c Revert "clang/test/Driver/crash-report.c: This requires rewriter for -frewrite-includes. [PR20321]" 2014-07-16 15:12:48 +00:00
import_self.c [clang-tests] Changed relative paths to absolute paths in run command for annotate-macro-args.m, get-cursor-macro-args.m, import_self.c. 2012-10-01 23:39:44 +00:00
include-directive1.c
include-directive2.c test/Preprocessor/include-directive2.c: Get rid of using <float.h> to avoid #include_next on mingw. 2011-07-11 14:53:27 +00:00
include-directive3.c
include-macros.c
include-pth.c
indent_macro.c
init.c [PowerPC] Support ELFv1/ELFv2 ABI selection via -mabi= option 2014-07-28 13:17:52 +00:00
invalid-__has_warning1.c Refactored duplicate string literal lexing code within Preprocessor, into a 2012-11-17 19:15:38 +00:00
invalid-__has_warning2.c Refactored duplicate string literal lexing code within Preprocessor, into a 2012-11-17 19:15:38 +00:00
iwithprefix.c Make test run reliably 2013-11-05 12:45:43 +00:00
line-directive-output.c Properly escape filenames in line directives. 2013-08-29 01:42:42 +00:00
line-directive.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
macho-embedded-predefines.c ARM: Correctly identify cortex-m4 as v7em. 2014-06-26 17:24:16 +00:00
macro-multiline.c Fix and restore the macro-multiline.c test 2014-04-19 21:40:58 +00:00
macro_arg_directive.c Make preprocessor act in a GCC-compatible fashion when a macro is redefined 2012-08-30 13:38:46 +00:00
macro_arg_directive.h Don't allow #include (and its friends #import, #include_next and 2011-12-16 22:50:01 +00:00
macro_arg_empty.c Fix whitespace handling in empty macro arguments 2014-02-04 19:18:32 +00:00
macro_arg_keyword.c
macro_arg_slocentry_merge.c [preprocessor] When "merging" macro argument tokens into one SLocEntry chunk, 2012-12-19 23:55:44 +00:00
macro_arg_slocentry_merge.h [preprocessor] When "merging" macro argument tokens into one SLocEntry chunk, 2012-12-19 23:55:44 +00:00
macro_backslash.c Handle -D arguments ending in a backslash. 2013-08-28 20:35:38 +00:00
macro_disable.c fix a case where macro expansion should be disabled, patch by 2010-03-26 17:49:16 +00:00
macro_expand.c FileCheck'ize tests 2013-01-25 20:34:08 +00:00
macro_expand_empty.c If preprocessing results in a token with leading whitespace that was expanded 2014-02-24 20:50:36 +00:00
macro_expandloc.c Migrate tests to -verify and merge them 2013-01-25 20:33:53 +00:00
macro_fn.c Add new diagnostic messages when too many arguments are presented to a 2013-07-23 18:01:49 +00:00
macro_fn_comma_swallow.c filecheckize test 2010-08-21 00:29:50 +00:00
macro_fn_comma_swallow2.c Improved support for removing the comma preceding __VA_ARGS__ where __VA_ARGS__ 2012-11-09 13:24:30 +00:00
macro_fn_disable_expand.c
macro_fn_lparen_scan.c
macro_fn_lparen_scan2.c
macro_fn_placemarker.c
macro_fn_preexpand.c
macro_fn_varargs_iso.c
macro_fn_varargs_named.c
macro_misc.c [preprocessor] Allow comparing two macro definitions syntactically instead of only lexically. 2013-04-03 17:39:30 +00:00
macro_not_define.c
macro_paste_bad.c Simplify test case added in r194059 2013-11-05 10:05:58 +00:00
macro_paste_bcpl_comment.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
macro_paste_c_block_comment.c Allow -verify directives to be filtered by preprocessing. 2012-07-11 19:58:23 +00:00
macro_paste_commaext.c Fix whitespace handling in ## operator 2014-02-04 19:18:28 +00:00
macro_paste_empty.c [Preprocessor] Prevent expansion of y in x ## y when x is empty 2013-05-25 01:35:18 +00:00
macro_paste_hard.c
macro_paste_hashhash.c When expanding macro arguments, treat '##' coming from an argument as a normal token. 2011-07-07 03:40:37 +00:00
macro_paste_identifier_error.c Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
macro_paste_msextensions.c Add 'not' to commands that are expected to fail. 2013-07-04 16:16:58 +00:00
macro_paste_none.c
macro_paste_simple.c revert r133003 and fix the bug properly: the issue was that ## in a token 2011-06-14 18:19:37 +00:00
macro_paste_spacing.c Fix whitespace handling in ## operator 2014-02-04 19:18:28 +00:00
macro_paste_spacing2.c
macro_redefined.c Put macro redefinition warnings under -Wmacro-redefined 2014-04-04 00:17:16 +00:00
macro_rescan.c FileCheck'ize tests 2013-02-09 16:41:47 +00:00
macro_rescan2.c
macro_rescan_varargs.c
macro_rparen_scan.c
macro_rparen_scan2.c
macro_space.c Fix whitespace handling in empty macro expansions 2014-02-04 19:18:35 +00:00
macro_undef.c
macro_variadic.cl Add some semantic checks for OpenCL. Variadic macros, VLAs and bitfields are not supported. 2013-01-17 17:35:00 +00:00
macro_with_initializer_list.cpp Add not to a command that is expected to fail. 2013-07-24 18:45:44 +00:00
mi_opt.c
mi_opt.h
mi_opt2.c
mi_opt2.h
microsoft-ext.c Revert "Move -fms-extensions predefined macros into InitPreprocessor" 2014-04-16 20:10:16 +00:00
microsoft-header-search.c Fix false positives in -Wmsvc-include by continuing header search 2014-02-18 23:49:24 +00:00
microsoft-import.c Migrate a test to -verify 2013-01-28 20:55:54 +00:00
missing-system-header.c Change err_pp_file_not_found back to an Error; when it's a Warning, we suppress it in system headers. And it is not a good idea to suppress it in system headers. (This was originally changed in r134996 to implement -MG.) 2011-08-30 23:07:51 +00:00
missing-system-header.h Change err_pp_file_not_found back to an Error; when it's a Warning, we suppress it in system headers. And it is not a good idea to suppress it in system headers. (This was originally changed in r134996 to implement -MG.) 2011-08-30 23:07:51 +00:00
mmx.c Pass a target triple explicitly to check platform specific macros definitions. 2012-05-09 18:49:52 +00:00
non_fragile_feature.m Make -fobjc-nonfragile-abi the -cc1 default, since it's the 2011-10-02 01:16:38 +00:00
non_fragile_feature1.m Rename the GCC Objective-C runtime to gcc from gnu-fragile and the GNUstep 2012-07-03 20:49:52 +00:00
objc-pp.m Prior to adding the new "expected-no-diagnostics" directive to VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. 2012-10-19 12:44:48 +00:00
optimize.c Don't pass -O0 to clang_cc1, it is the default. 2013-09-04 04:12:25 +00:00
output_paste_avoid.cpp Simplify logic for avoiding concatenation after numeric constants. 2013-02-08 22:30:31 +00:00
overflow.c
pic.c Teach Clang about PIE compilations. This is the first step of PR12380. 2012-04-08 16:40:35 +00:00
pp-modules.c When emitting a preprocessed file with implicit module imports, make sure line directives are emitted in the next line. 2013-04-29 17:26:22 +00:00
pp-modules.h [test] add missing header for the test. 2013-04-29 17:31:48 +00:00
pp-record.c [preprocessing record] Have the MacroDefinitions map point to the MacroDefinition object instead 2013-02-22 18:35:59 +00:00
pp-record.h [preprocessor] Handle correctly inclusion directives that have macro expansions, e.g 2012-03-27 18:47:48 +00:00
pr2086.c
pr2086.h
pr13851.c Allow -MF to be used in combination with -E -M or -E -MM. 2012-09-26 19:01:49 +00:00
pragma-captured.c Parser support for #pragma clang __debug captured 2013-04-16 18:41:26 +00:00
pragma-pushpop-macro.c Fixed a problem with #pragma push_macro/pop_macro implementation. 2012-08-29 16:56:24 +00:00
pragma_diagnostic.c Made the "expected string literal" diagnostic more expressive 2012-11-17 19:16:52 +00:00
pragma_diagnostic_output.c Copy diagnostic pragmas to the preprocessed output, from Richard Osborne! 2011-06-22 19:41:48 +00:00
pragma_diagnostic_sections.cpp Diagnose uninitialized uses of a variable within its own initializer. 2011-03-27 09:46:56 +00:00
pragma_microsoft.c Accept #pragma warning(push, 0) without warning 2013-10-02 15:19:23 +00:00
pragma_microsoft.cpp Accept #pragma warning(push, 0) without warning 2013-10-02 15:19:23 +00:00
pragma_poison.c
pragma_sysheader.c Fix off-by-one error in #pragma clang system_header. 2013-04-17 19:09:18 +00:00
pragma_sysheader.h
pragma_unknown.c FileCheck'ize a test 2013-02-09 16:25:38 +00:00
predefined-arch-macros.c Add support for -march=bdver4. 2014-05-02 15:47:51 +00:00
predefined-exceptions.m Make -fobjc-nonfragile-abi the -cc1 default, since it's the 2011-10-02 01:16:38 +00:00
predefined-macros.c Driver: bifurcate extended and basic MSC versioning 2014-07-16 03:13:50 +00:00
print-pragma-microsoft.c Expand macros in pragmas with -fms-extensions and -E 2014-02-20 22:59:51 +00:00
print_line_count.c FileCheck'ize tests 2013-02-09 16:41:47 +00:00
print_line_empty_file.c Fix this test to use -cc1. 2010-09-17 02:47:35 +00:00
print_line_include.c Make sure clang puts tokens from different files on separate lines in "-E -P" mode. <rdar://problem/12774044> 2013-01-09 03:16:42 +00:00
print_line_include.h Make sure clang puts tokens from different files on separate lines in "-E -P" mode. <rdar://problem/12774044> 2013-01-09 03:16:42 +00:00
print_line_track.c fix PR7360: -P mode turns off line markers, but not blank space. 2010-06-12 16:20:56 +00:00
pushable-diagnostics.c Split out -Wconversion warnings about constant precision into their 2010-11-09 22:22:12 +00:00
skipping_unclean.c FileCheck'ize tests 2013-02-09 16:41:47 +00:00
stdint.c If char/short are shorter than int, do not use U as suffix for 2014-07-17 20:12:32 +00:00
stringize_misc.c
stringize_space.c FileCheck'ize and merge tests 2013-01-28 17:31:40 +00:00
traditional-cpp.c Fix "//" comments with -traditional-cpp in C++. 2013-08-28 20:53:32 +00:00
ucn-allowed-chars.c Fix the range for Malayam UCNs in C99. 2014-02-05 15:32:23 +00:00
ucn-pp-identifier.c Preprocessor: support defined() with operator names for MS compatibility 2014-05-21 06:13:51 +00:00
undef-error.c Add pedantic warning -Wempty-translation-unit (C11 6.9p1). 2012-06-06 17:25:21 +00:00
unterminated.c
user_defined_system_framework.c Correct test inovocations to use %clang_cc1 rather than direct invocation (so that it can have additional options set when trying to debug issues causing regressions). 2012-10-25 13:56:30 +00:00
utf8-allowed-chars.c Properly validate UCNs for C99 and C++03 (both more restrictive than C(++)11). 2013-02-09 01:10:25 +00:00
warn-disabled-macro-expansion.c Reinstate r173952, this time limiting it to exactly the form 2013-01-30 23:10:17 +00:00
warn-macro-unused.c Split isFromMainFile into two functions. 2013-08-22 00:27:10 +00:00
warn-macro-unused.h Add missing header file for the test. 2011-07-11 21:58:44 +00:00
warning_tests.c Made the "expected string literal" diagnostic more expressive 2012-11-17 19:16:52 +00:00
woa-defaults.c Driver: add target definition for Windows on ARM 2014-04-04 20:31:19 +00:00
woa-wchar_t.c Target: fix wchar_t definition for Windows on ARM 2014-05-04 01:56:04 +00:00
x86_target_features.c Fix broken RUN lines 2014-02-16 07:28:32 +00:00