backport: re PR target/61976 (aix64: Data corruption in struct passed by value)
Backport from mainline 2019-04-11 David Edelsohn <dje.gcc@gmail.com> * xcoffout.h (xcoff_private_rodata_section_name): Declare. * xcoffout.c (xcoff_private_rodata_section_name): Define. * config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create read_only_private_data_section using coff_private_rodata_section_name. (rs6000_xcoff_file_start): Generate coff_private_rodata_section_name. 2018-12-04 David Edelsohn <dje.gcc@gmail.com> 2018-12-13 David Edelsohn <dje.gcc@gmail.com> PR target/61976 * config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates in FPRs on AIX. Ensure type is non-NULL. (rs6000_arg_partial_bytes): Same. From-SVN: r271257
This commit is contained in:
parent
adff581212
commit
908c3c73b6
@ -1,3 +1,20 @@
|
||||
2019-05-15 David Edelsohn <dje.gcc@gmail.com>
|
||||
|
||||
Backport from mainline
|
||||
2019-04-11 David Edelsohn <dje.gcc@gmail.com>
|
||||
* xcoffout.h (xcoff_private_rodata_section_name): Declare.
|
||||
* xcoffout.c (xcoff_private_rodata_section_name): Define.
|
||||
* config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create
|
||||
read_only_private_data_section using coff_private_rodata_section_name.
|
||||
(rs6000_xcoff_file_start): Generate coff_private_rodata_section_name.
|
||||
|
||||
2018-12-04 David Edelsohn <dje.gcc@gmail.com>
|
||||
2018-12-13 David Edelsohn <dje.gcc@gmail.com>
|
||||
PR target/61976
|
||||
* config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates
|
||||
in FPRs on AIX. Ensure type is non-NULL.
|
||||
(rs6000_arg_partial_bytes): Same.
|
||||
|
||||
2019-05-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* config/arm/t-rtems: Replace -march=armv7-m multilibs with
|
||||
|
@ -13144,7 +13144,9 @@ rs6000_function_arg (cumulative_args_t cum_v, machine_mode mode,
|
||||
if (elt_mode == TDmode && (cum->fregno % 2) == 1)
|
||||
cum->fregno++;
|
||||
|
||||
if (USE_FP_FOR_ARG_P (cum, elt_mode))
|
||||
if (USE_FP_FOR_ARG_P (cum, elt_mode)
|
||||
&& !(TARGET_AIX && !TARGET_ELF
|
||||
&& type != NULL && AGGREGATE_TYPE_P (type)))
|
||||
{
|
||||
rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1];
|
||||
rtx r, off;
|
||||
@ -13280,7 +13282,9 @@ rs6000_arg_partial_bytes (cumulative_args_t cum_v, machine_mode mode,
|
||||
|
||||
align_words = rs6000_parm_start (mode, type, cum->words);
|
||||
|
||||
if (USE_FP_FOR_ARG_P (cum, elt_mode))
|
||||
if (USE_FP_FOR_ARG_P (cum, elt_mode)
|
||||
&& !(TARGET_AIX && !TARGET_ELF
|
||||
&& type != NULL && AGGREGATE_TYPE_P (type)))
|
||||
{
|
||||
unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
|
||||
|
||||
@ -36465,6 +36469,10 @@ rs6000_xcoff_asm_init_sections (void)
|
||||
rs6000_xcoff_output_readwrite_section_asm_op,
|
||||
&xcoff_private_data_section_name);
|
||||
|
||||
read_only_private_data_section
|
||||
= get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op,
|
||||
&xcoff_private_rodata_section_name);
|
||||
|
||||
tls_data_section
|
||||
= get_unnamed_section (SECTION_TLS,
|
||||
rs6000_xcoff_output_tls_section_asm_op,
|
||||
@ -36475,10 +36483,6 @@ rs6000_xcoff_asm_init_sections (void)
|
||||
rs6000_xcoff_output_tls_section_asm_op,
|
||||
&xcoff_private_data_section_name);
|
||||
|
||||
read_only_private_data_section
|
||||
= get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op,
|
||||
&xcoff_private_data_section_name);
|
||||
|
||||
toc_section
|
||||
= get_unnamed_section (0, rs6000_xcoff_output_toc_section_asm_op, NULL);
|
||||
|
||||
@ -36659,6 +36663,8 @@ rs6000_xcoff_file_start (void)
|
||||
main_input_filename, ".bss_");
|
||||
rs6000_gen_section_name (&xcoff_private_data_section_name,
|
||||
main_input_filename, ".rw_");
|
||||
rs6000_gen_section_name (&xcoff_private_rodata_section_name,
|
||||
main_input_filename, ".rop_");
|
||||
rs6000_gen_section_name (&xcoff_read_only_section_name,
|
||||
main_input_filename, ".ro_");
|
||||
rs6000_gen_section_name (&xcoff_tls_data_section_name,
|
||||
|
@ -63,6 +63,7 @@ static const char *xcoff_current_function_file;
|
||||
|
||||
char *xcoff_bss_section_name;
|
||||
char *xcoff_private_data_section_name;
|
||||
char *xcoff_private_rodata_section_name;
|
||||
char *xcoff_tls_data_section_name;
|
||||
char *xcoff_tbss_section_name;
|
||||
char *xcoff_read_only_section_name;
|
||||
|
@ -127,6 +127,7 @@ extern const char *xcoff_current_include_file;
|
||||
|
||||
extern char *xcoff_bss_section_name;
|
||||
extern char *xcoff_private_data_section_name;
|
||||
extern char *xcoff_private_rodata_section_name;
|
||||
extern char *xcoff_tls_data_section_name;
|
||||
extern char *xcoff_tbss_section_name;
|
||||
extern char *xcoff_read_only_section_name;
|
||||
|
Loading…
Reference in New Issue
Block a user