What is the purpose of "-Wa,option" in GCC?
Always check the Documentation
Pass option as an option to the assembler. If option contains commas, it is split into multiple options at the commas.
So in your case
-ad were passed to the assembler, what those do depend on your assembler. Gcc doesn't know what to do with system-specific assembler options so giving it the
-Wa flag lets it know to just pass whatever follows through.
You can also find the documentation locally via man pages. To open the documentation on GNU's assembler, perform:
$ man 1 as
It will open:
AS(1) GNU Development Tools AS(1) NAME AS - the portable GNU assembler. SYNOPSIS as [-a[cdghlns][=file]] [--alternate] [-D] [--compress-debug-sections] [--nocompress-debug-sections] [--debug-prefix-map old=new] [--defsym sym=val] [-f] [-g] [--gstabs] [--gstabs+] [--gdwarf-2] [--gdwarf-sections] [--help] [-I dir] [-J] [-K] [-L] [--listing-lhs-width=NUM] [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM] [--listing-cont-lines=NUM] [--keep-locals] [-o objfile] [-R] [--reduce-memory-overheads] [--statistics] [-v] [-version] [--version] [-W] [--warn] [--fatal-warnings] [-w] [-x] [-Z] [@FILE] [--size-check=[error|warning]] [--target-help] [target-options] [--|files ...] ...
Since these options are passed to the assembler, you need to check the man page for
-a turns on assembly output listings (which is written to standard output), while
-ad omits any debugging directive from the output listing.