summary refs log tree commit diff
path: root/gas.c
AgeCommit message (Collapse)Author
2022-02-02shared linkage logic for func/dataQuentin Carbonneaux
2021-09-09skip nx stack annotation on osxQuentin Carbonneaux
2021-08-02gas: always emit GNU-stack noteÉrico Nogueira
In cases where stash was 0, gasemitfin exits immediately and the GNU-stack note isn't added to the asm output. This would result in an executable where GNU_STACK uses flags RWE instead of the desired RW.
2021-03-02renaming in gas.cQuentin Carbonneaux
2021-03-02add data $name = section "section" ...Drew DeVault
This allows you to explicitly specify the section to emit the data directive for, allowing for sections other than .data: for example, .bss or .init_array.
2021-03-02gas: emit GNU-stack note so that stack is not executableMichael Forney
GNU ld uses the presence of these notes to determine the flags of the final GNU_STACK program header. If they are present in every object, then the resulting executable's GNU_STACK uses flags RW instead of RWE. Reported by Érico Nogueira Rolim.
2019-05-16Fix a few uses of gassym missed in 9e7e5bffMichael Forney
2019-05-15Allow specifying literal global namesMichael Forney
2019-05-03gas: use .balign instead of .alignQuentin Carbonneaux
.align N can either mean align to the next multiple of N or align to the next multiple of 1<<N. Credit goes to Jorge Acereda Maciá for reporting this issue.
2019-04-29add missing gas prefixQuentin Carbonneaux
Thanks to Jorge Acereda Maciá for catching this.
2017-06-06fix fp subtractions on amd64Quentin Carbonneaux
The stashing of constants in gas.c was also changed to support 16-bytes constants.
2017-04-08prepare for multi-targetQuentin Carbonneaux
This big diff does multiple changes to allow the addition of new targets to qbe. The changes are listed below in decreasing order of impact. 1. Add a new Target structure. To add support for a given target, one has to implement all the members of the Target structure. All the source files where changed to use this interface where needed. 2. Single out amd64-specific code. In this commit, the amd64 target T_amd64_sysv is the only target available, it is implemented in the amd64/ directory. All the non-static items in this directory are prefixed with either amd64_ or amd64_sysv (for items that are specific to the System V ABI). 3. Centralize Ops information. There is now a file 'ops.h' that must be used to store all the available operations together with their metadata. The various targets will only select what they need; but it is beneficial that there is only *one* place to change to add a new instruction. One good side effect of this change is that any operation 'xyz' in the IL now as a corresponding 'Oxyz' in the code. 4. Misc fixes. One notable change is that instruction selection now generates generic comparison operations and the lowering to the target's comparisons is done in the emitter. GAS directives for data are the same for many targets, so data emission was extracted in a file 'gas.c'. 5. Modularize the Makefile. The Makefile now has a list of C files that are target-independent (SRC), and one list of C files per target. Each target can also use its own 'all.h' header (for example to define registers).