9 Commits

Author SHA1 Message Date
ac9b8c676e Constify target_desc declarations
This patch changes various global target_desc declarations to const, thereby
correcting a prominent source of ODR violations in PowerPC-related target code.
The majority of files/changes are mechanical const-ifications accomplished by
regenerating the C files in features/.

This also required manually updating mips-linux-tdep.h,  s390-linux-tdep.h,
nios2-tdep.h, s390-tdep.h, arch/ppc-linux-tdesc.h, arch/ppc-linux-common.c,
and rs6000-tdep.c.

Patch tested against the sourceware trybot, and fully regression tested against
our (Red Hat's) internal  test infrastructure on Rawhide aarch64, s390x, x86_64,
and powerpcle.

With this patch, I can finally enable LTO in our GDB package builds. [Tested
with a rawhide scratch build containing this patch.]

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=24835
2022-09-29 10:00:13 -07:00
51a948fdf0 gdb: Have allocate_target_description return a unique_ptr
Update allocate_target_description to return a target_desc_up, a
specialisation of unique_ptr.

This commit does not attempt to make use of the unique_ptr in the
best possible way, in almost all cases we immediately release the
pointer from within the unique_ptr and then continue as before.

There are a few places where it was easy to handle the unique_ptr, and
in these cases I've done that.

Everything under gdb/features/* is auto-regenerated.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* arch/aarch32.c (aarch32_create_target_description): Release
	unique_ptr returned from allocate_target_description.
	* arch/aarch64.c (aarch64_create_target_description): Likewise.
	* arch/amd64.c (amd64_create_target_description): Likewise.
	* arch/arc.c (arc_create_target_description): Likewise.
	* arch/arm.c (arm_create_target_description): Likewise.
	* arch/i386.c (i386_create_target_description): Likewise.
	* arch/riscv.c (riscv_create_target_description): Update return
	type.  Handle allocate_target_description returning a unique_ptr.
	(riscv_lookup_target_description): Update to handle unique_ptr.
	* arch/tic6x.c (tic6x_create_target_description): Release
	unique_ptr returned from allocate_target_description.
	* features/microblaze-with-stack-protect.c: Regenerate.
	* features/microblaze.c: Regenerate.
	* features/mips-dsp-linux.c: Regenerate.
	* features/mips-linux.c: Regenerate.
	* features/mips64-dsp-linux.c: Regenerate.
	* features/mips64-linux.c: Regenerate.
	* features/nds32.c: Regenerate.
	* features/nios2.c: Regenerate.
	* features/or1k.c: Regenerate.
	* features/rs6000/powerpc-32.c: Regenerate.
	* features/rs6000/powerpc-32l.c: Regenerate.
	* features/rs6000/powerpc-403.c: Regenerate.
	* features/rs6000/powerpc-403gc.c: Regenerate.
	* features/rs6000/powerpc-405.c: Regenerate.
	* features/rs6000/powerpc-505.c: Regenerate.
	* features/rs6000/powerpc-601.c: Regenerate.
	* features/rs6000/powerpc-602.c: Regenerate.
	* features/rs6000/powerpc-603.c: Regenerate.
	* features/rs6000/powerpc-604.c: Regenerate.
	* features/rs6000/powerpc-64.c: Regenerate.
	* features/rs6000/powerpc-64l.c: Regenerate.
	* features/rs6000/powerpc-7400.c: Regenerate.
	* features/rs6000/powerpc-750.c: Regenerate.
	* features/rs6000/powerpc-860.c: Regenerate.
	* features/rs6000/powerpc-altivec32.c: Regenerate.
	* features/rs6000/powerpc-altivec32l.c: Regenerate.
	* features/rs6000/powerpc-altivec64.c: Regenerate.
	* features/rs6000/powerpc-altivec64l.c: Regenerate.
	* features/rs6000/powerpc-e500.c: Regenerate.
	* features/rs6000/powerpc-e500l.c: Regenerate.
	* features/rs6000/powerpc-isa205-32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-64l.c: Regenerate.
	* features/rs6000/powerpc-isa205-altivec32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-altivec64l.c: Regenerate.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c: Regenerate.
	* features/rs6000/powerpc-isa205-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-vsx64l.c: Regenerate.
	* features/rs6000/powerpc-isa207-htm-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-isa207-htm-vsx64l.c: Regenerate.
	* features/rs6000/powerpc-isa207-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-isa207-vsx64l.c: Regenerate.
	* features/rs6000/powerpc-vsx32.c: Regenerate.
	* features/rs6000/powerpc-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-vsx64.c: Regenerate.
	* features/rs6000/powerpc-vsx64l.c: Regenerate.
	* features/rs6000/rs6000.c: Regenerate.
	* features/rx.c: Regenerate.
	* features/s390-gs-linux64.c: Regenerate.
	* features/s390-linux32.c: Regenerate.
	* features/s390-linux32v1.c: Regenerate.
	* features/s390-linux32v2.c: Regenerate.
	* features/s390-linux64.c: Regenerate.
	* features/s390-linux64v1.c: Regenerate.
	* features/s390-linux64v2.c: Regenerate.
	* features/s390-te-linux64.c: Regenerate.
	* features/s390-tevx-linux64.c: Regenerate.
	* features/s390-vx-linux64.c: Regenerate.
	* features/s390x-gs-linux64.c: Regenerate.
	* features/s390x-linux64.c: Regenerate.
	* features/s390x-linux64v1.c: Regenerate.
	* features/s390x-linux64v2.c: Regenerate.
	* features/s390x-te-linux64.c: Regenerate.
	* features/s390x-tevx-linux64.c: Regenerate.
	* features/s390x-vx-linux64.c: Regenerate.
	* mips-tdep.c (_initialize_mips_tdep): Release unique_ptr returned
	from allocate_target_description.
	* target-descriptions.c (allocate_target_description): Update
	return type.
	(print_c_tdesc::visit_pre): Release unique_ptr returned from
	allocate_target_description.

gdbserver/ChangeLog:

	* linux-low.cc (linux_process_target::handle_extended_wait):
	Release the unique_ptr returned from allocate_target_description.
	* linux-riscv-low.cc (riscv_target::low_arch_setup): Likewise.
	* linux-x86-low.cc (tdesc_amd64_linux_no_xml): Change type.
	(tdesc_i386_linux_no_xml): Change type.
	(x86_linux_read_description): Borrow pointer from unique_ptr
	object.
	(x86_target::get_ipa_tdesc_idx): Likewise.
	(initialize_low_arch): Likewise.
	* tdesc.cc (allocate_target_description): Update return type.

gdbsupport/ChangeLog:

	* tdesc.h (allocate_target_description): Update return type.
2020-10-08 10:14:14 +01:00
c4bfde41c4 gdb/
* copying.awk: Print buffer-read-only and vi ro markers.
	* copying.c: Rebuild.
	* gdbarch.sh (copyright): Print buffer-read-only and vi ro markers.
	* gdbarch.c, gdbarch.h: Rebuild.
	* target-descriptions.c (maint_print_c_tdesc_cmd): Print
	buffer-read-only and vi ro markers.
	* features/arm-with-iwmmxt.c: Rebuild.
	* features/arm-with-m-fpa-layout.c: Rebuild.
	* features/arm-with-m-vfp-d16.c: Rebuild.
	* features/arm-with-m.c: Rebuild.
	* features/arm-with-neon.c: Rebuild.
	* features/arm-with-vfpv2.c: Rebuild.
	* features/arm-with-vfpv3.c: Rebuild.
	* features/i386/amd64-avx-linux.c: Rebuild.
	* features/i386/amd64-avx.c: Rebuild.
	* features/i386/amd64-linux.c: Rebuild.
	* features/i386/amd64.c: Rebuild.
	* features/i386/i386-avx-linux.c: Rebuild.
	* features/i386/i386-avx.c: Rebuild.
	* features/i386/i386-linux.c: Rebuild.
	* features/i386/i386-mmx-linux.c: Rebuild.
	* features/i386/i386-mmx.c: Rebuild.
	* features/i386/i386.c: Rebuild.
	* features/i386/x32-avx-linux.c: Rebuild.
	* features/i386/x32-avx.c: Rebuild.
	* features/i386/x32-linux.c: Rebuild.
	* features/i386/x32.c: Rebuild.
	* features/mips-dsp-linux.c: Rebuild.
	* features/mips-linux.c: Rebuild.
	* features/mips64-dsp-linux.c: Rebuild.
	* features/mips64-linux.c: Rebuild.
	* features/rs6000/powerpc-32.c: Rebuild.
	* features/rs6000/powerpc-32l.c: Rebuild.
	* features/rs6000/powerpc-403.c: Rebuild.
	* features/rs6000/powerpc-403gc.c: Rebuild.
	* features/rs6000/powerpc-405.c: Rebuild.
	* features/rs6000/powerpc-505.c: Rebuild.
	* features/rs6000/powerpc-601.c: Rebuild.
	* features/rs6000/powerpc-602.c: Rebuild.
	* features/rs6000/powerpc-603.c: Rebuild.
	* features/rs6000/powerpc-604.c: Rebuild.
	* features/rs6000/powerpc-64.c: Rebuild.
	* features/rs6000/powerpc-64l.c: Rebuild.
	* features/rs6000/powerpc-7400.c: Rebuild.
	* features/rs6000/powerpc-750.c: Rebuild.
	* features/rs6000/powerpc-860.c: Rebuild.
	* features/rs6000/powerpc-altivec32.c: Rebuild.
	* features/rs6000/powerpc-altivec32l.c: Rebuild.
	* features/rs6000/powerpc-altivec64.c: Rebuild.
	* features/rs6000/powerpc-altivec64l.c: Rebuild.
	* features/rs6000/powerpc-cell32l.c: Rebuild.
	* features/rs6000/powerpc-cell64l.c: Rebuild.
	* features/rs6000/powerpc-e500.c: Rebuild.
	* features/rs6000/powerpc-e500l.c: Rebuild.
	* features/rs6000/powerpc-isa205-32l.c: Rebuild.
	* features/rs6000/powerpc-isa205-64l.c: Rebuild.
	* features/rs6000/powerpc-isa205-altivec32l.c: Rebuild.
	* features/rs6000/powerpc-isa205-altivec64l.c: Rebuild.
	* features/rs6000/powerpc-isa205-vsx32l.c: Rebuild.
	* features/rs6000/powerpc-isa205-vsx64l.c: Rebuild.
	* features/rs6000/powerpc-vsx32.c: Rebuild.
	* features/rs6000/powerpc-vsx32l.c: Rebuild.
	* features/rs6000/powerpc-vsx64.c: Rebuild.
	* features/rs6000/powerpc-vsx64l.c: Rebuild.
	* features/rs6000/rs6000.c: Rebuild.
	* features/s390-linux32.c: Rebuild.
	* features/s390-linux32v1.c: Rebuild.
	* features/s390-linux32v2.c: Rebuild.
	* features/s390-linux64.c: Rebuild.
	* features/s390-linux64v1.c: Rebuild.
	* features/s390-linux64v2.c: Rebuild.
	* features/s390x-linux64.c: Rebuild.
	* features/s390x-linux64v1.c: Rebuild.
	* features/s390x-linux64v2.c: Rebuild.
	* features/tic6x-c62x-linux.c: Rebuild.
	* features/tic6x-c62x.c: Rebuild.
	* features/tic6x-c64x-linux.c: Rebuild.
	* features/tic6x-c64x.c: Rebuild.
	* features/tic6x-c64xp-linux.c: Rebuild.
	* features/tic6x-c64xp.c: Rebuild.
2012-07-27 20:23:05 +00:00
777532fcfb 2012-05-02 Sergio Durigan Junior <sergiodj@gmail.com>
* features/i386/i386-mmx-linux.c: Regenerate.
	* features/rs6000/powerpc-32.c: Likewise.
	* features/rs6000/powerpc-32l.c: Likewise.
	* features/rs6000/powerpc-403.c: Likewise.
	* features/rs6000/powerpc-403gc.c: Likewise.
	* features/rs6000/powerpc-405.c: Likewise.
	* features/rs6000/powerpc-505.c: Likewise.
	* features/rs6000/powerpc-601.c: Likewise.
	* features/rs6000/powerpc-602.c: Likewise.
	* features/rs6000/powerpc-603.c: Likewise.
	* features/rs6000/powerpc-604.c: Likewise.
	* features/rs6000/powerpc-64.c: Likewise.
	* features/rs6000/powerpc-64l.c: Likewise.
	* features/rs6000/powerpc-750.c: Likewise.
	* features/rs6000/powerpc-860.c: Likewise.
	* features/rs6000/powerpc-e500.c: Likewise.
	* features/rs6000/powerpc-e500l.c: Likewise.
	* features/rs6000/powerpc-isa205-32l.c: Likewise.
	* features/rs6000/powerpc-isa205-64l.c: Likewise.
	* features/rs6000/rs6000.c: Likewise.
2012-05-02 04:59:34 +00:00
ad068eabda * target-descriptions.h (struct type): Do not declare.
(struct tdesc_type): Declare.
	(tdesc_named_type): Change return type to struct tdesc_type *.
	(tdesc_record_type): Remove.
	(tdesc_create_vector): Add prototype.
	(tdesc_create_union): Likewise.
	(tdesc_add_field): Likewise.

	* target-descriptions.c (struct tdesc_reg): Replace gdb_type
	member by tdesc_type member.
	(struct tdesc_type_field, tdesc_type_field): Add type and vector def.
	(struct tdesc_type, tdesc_type_p): Likewise.
	(struct tdesc_arch_reg, tdesc_arch_reg): Likewise.
	(struct tdesc_feature): Change type of "types" to VEC(tdesc_type_p).
	(struct tdesc_arch_data): Replace registers member by arch_regs.

	(tdesc_predefined_types): Change to array of pre-defined
	struct tdesc_type structures.  Add "code_ptr" and "data_ptr".
	(tdesc_named_type): Return struct tdesc_type * instead of GDB type.
	(tdesc_gdb_type): New function.

	(target_find_description): Update for data structure changes.
	(tdesc_data_cleanup): Likewise.
	(tdesc_numbered_register): Likewise.
	(tdesc_use_registers): Likewise.
	(tdesc_create_reg): Likewise.

	(tdesc_find_arch_register): New function.
	(tdesc_find_register): Use it.
	(tdesc_register_type): Use tdesc_gdb_type to generate GDB type from
	tdesc_type on demand; cache generated types in tdesc_arch_reg.

	(tdesc_free_type): New function.
	(tdesc_free_feature): Call it.

	(tdesc_create_vector): New function.
	(tdesc_create_union): Likewise.
	(tdesc_add_field): Likewise.
	(tdesc_record_type): Remove.

	(tdesc_type_id): Remove.
	(maint_print_c_tdesc_cmd): Update for data structure changes.  Update
	generated code to create tdesc_type structures instead of GDB types.

	* xml-tdesc.c: Do not include "gdbtypes.h".
	(struct tdesc_parsing_data): Change type of current_union to
	struct tdesc_type *.
	(tdesc_start_reg): Do not special-case "code_ptr" or "data_ptr".
	(tdesc_start_union): Call tdesc_create_union.
	(tdesc_start_field): Call tdesc_add_field.
	(tdesc_start_vector): Call tdesc_create_vector.
	(tdesc_end_union): Remove.
	(feature_children): Remove reference to tdesc_end_union.

	* features/arm-with-iwmmxt.c: Regenerate.
	* features/mips-linux.c: Regenerate.
	* features/mips64-linux.c: Regenerate.
	* features/rs6000/powerpc-32.c: Regenerate.
	* features/rs6000/powerpc-32l.c: Regenerate.
	* features/rs6000/powerpc-403.c: Regenerate.
	* features/rs6000/powerpc-403gc.c: Regenerate.
	* features/rs6000/powerpc-505.c: Regenerate.
	* features/rs6000/powerpc-601.c: Regenerate.
	* features/rs6000/powerpc-602.c: Regenerate.
	* features/rs6000/powerpc-603.c: Regenerate.
	* features/rs6000/powerpc-604.c: Regenerate.
	* features/rs6000/powerpc-64.c: Regenerate.
	* features/rs6000/powerpc-64l.c: Regenerate.
	* features/rs6000/powerpc-7400.c: Regenerate.
	* features/rs6000/powerpc-750.c: Regenerate.
	* features/rs6000/powerpc-860.c: Regenerate.
	* features/rs6000/powerpc-altivec32.c: Regenerate.
	* features/rs6000/powerpc-altivec32l.c: Regenerate.
	* features/rs6000/powerpc-altivec64.c: Regenerate.
	* features/rs6000/powerpc-altivec64l.c: Regenerate.
	* features/rs6000/powerpc-e500.c: Regenerate.
	* features/rs6000/powerpc-e500l.c: Regenerate.
	* features/rs6000/powerpc-isa205-32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-64l.c: Regenerate.
	* features/rs6000/powerpc-isa205-altivec32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-altivec64l.c: Regenerate.
	* features/rs6000/powerpc-isa205-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-isa205-vsx64l.c: Regenerate.
	* features/rs6000/powerpc-vsx32.c: Regenerate.
	* features/rs6000/powerpc-vsx32l.c: Regenerate.
	* features/rs6000/powerpc-vsx64.c: Regenerate.
	* features/rs6000/powerpc-vsx64l.c: Regenerate.
	* features/rs6000/rs6000.c: Regenerate.
2009-06-23 16:59:47 +00:00
8f4d54ed1b * features/rs6000/power-core.xml, features/rs6000/power64-core.xml,
features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
        Change the type of the lr register to code_ptr.
        * features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
        features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
        features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
        features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
        features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
        features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
        features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c: Regenerate.
2008-03-04 20:13:10 +00:00
0b998f4963 * features/rs6000/power-core.xml, features/rs6000/power64-core.xml
features/rs6000/powerpc-601.xml, features/rs6000/rs6000.xml:
        Set PC register type to "code_ptr".
        * features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
        features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
        features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
        features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
        features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
        features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
        features/rs6000/powerpc-e500.c, features/rs6000/rs6000.c:
        Regenerate.
2008-02-27 20:20:51 +00:00
f03eb1cffe * features/rs6000/power-core.xml: Use uint32 as register type.
* features/rs6000/power64-core.xml: Use uint64/uint32 as register type.
	* features/rs6000/powerpc-32.c: Regenerate.
	* features/rs6000/powerpc-403.c: Regenerate.
	* features/rs6000/powerpc-403gc.c: Regenerate.
	* features/rs6000/powerpc-505.c: Regenerate.
	* features/rs6000/powerpc-602.c: Regenerate.
	* features/rs6000/powerpc-603.c: Regenerate.
	* features/rs6000/powerpc-604.c: Regenerate.
	* features/rs6000/powerpc-64.c: Regenerate.
	* features/rs6000/powerpc-7400.c: Regenerate.
	* features/rs6000/powerpc-750.c: Regenerate.
	* features/rs6000/powerpc-860.c: Regenerate.
	* features/rs6000/powerpc-e500.c: Regenerate.
2007-11-05 21:55:39 +00:00
324300c09f * features/rs6000/powerpc-32.c, features/rs6000/powerpc-403.c,
features/rs6000/powerpc-403gc.c, features/rs6000/powerpc-505.c,
	features/rs6000/powerpc-601.c, features/rs6000/powerpc-602.c,
	features/rs6000/powerpc-603.c, features/rs6000/powerpc-604.c,
	features/rs6000/powerpc-64.c, features/rs6000/powerpc-7400.c,
	features/rs6000/powerpc-750.c, features/rs6000/powerpc-860.c,
	features/rs6000/powerpc-e500.c,	features/rs6000/rs6000.c: New
	generated files.
2007-10-15 19:41:56 +00:00