aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/asm/internal/flags/flags.go
AgeCommit message (Collapse)Author
14 dayscmd/asm, cmd/go: pass -std to assembler for standard library packagesCherry Mui
For the compiler, we already pass -std when compiling the standard library. Do the same for the assembler. So the assembler and the linker can tell which objects are in the standard library. Change-Id: I35d28a4c72d32c344eda37a3ff407ea525ee5cea Reviewed-on: https://go-review.googlesource.com/c/go/+/761200 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Matloob <matloob@golang.org> Reviewed-by: Michael Matloob <matloob@google.com>
2025-11-18cmd/asm,cmd/compile,cmd/internal/obj/riscv: use compressed instructions on ↵Joel Sing
riscv64 Make use of compressed instructions on riscv64 - add a compress pass to the end of the assembler, which replaces non-compressed instructions with compressed alternatives if possible. Provide a `compressinstructions` compiler and assembler debug flag, such that the compression pass can be disabled via `-asmflags=all=-d=compressinstructions=0` and `-gcflags=all=-d=compressinstructions=0`. Note that this does not prevent the explicit use of compressed instructions via assembly. Note that this does not make use of compressed control transfer instructions - this will be implemented in later changes. Reduces the text size of a hello world binary by ~121KB and reduces the text size of the go binary on riscv64 by ~1.21MB (between 8-10% in both cases). Updates #71105 Cq-Include-Trybots: luci.golang.try:gotip-linux-riscv64 Change-Id: I24258353688554042c2a836deed4830cc673e985 Reviewed-on: https://go-review.googlesource.com/c/go/+/523478 Reviewed-by: Mark Ryan <markdryan@rivosinc.com> Reviewed-by: Mark Freeman <markfreeman@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
2023-08-22cmd/asm,cmd/dist,cmd/go: remove asm -compiling-runtime flagAustin Clements
Currently, dist and go pass a -compiling-runtime flag to asm if they're compiling a runtime package. However, now that we always pass the package path to asm, it can make that determination just as well as its callers can. This CL moves that check into asm and drops the flag. This in turn makes dist's copy of IsRuntimePackagePath unnecessary, so we delete it. Change-Id: I6ecf2d50b5b83965012af34dbe5f9a973ba0778b Reviewed-on: https://go-review.googlesource.com/c/go/+/521697 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-29cmd/asm: use strings.TrimSuffixcuiweixie
Change-Id: If08ce3f8534f5fb7ce97ec124bfeff937e65f63b Reviewed-on: https://go-review.googlesource.com/c/go/+/435943 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2022-09-01cmd/go: support long commands in asm and cgoDaniel Martí
We have supported passing lists of arguments to the compiler and linker for some time, since https://go.dev/issue/18468 was fixed. The reason behind it is that some systems like Windows have relatively small limits for commands, and some Go packages contain many source files. This wasn't done for other Go toolchain programs like cgo and asm, as there wasn't an initial need for it. A TODO was left for them. The need has now arisen in the form of a bug report for a build of a large Go package involving cgo. Do asm as well, which could be triggered by lots of asm files. I rebuilt Go itself with some basic logging to tell if any other commands were being run with moderately large command lengths. I only found one other: gcc being invoked with 300-500 bytes. I didn't spot any length close to 1KiB, and we can't safely assume that a user's CC compiler supports these "response files", so leave that as another TODO for the future. Just like cgo and asm, we can revisit this if any user reports a bug on the issue tracker. Fixes #47235. Change-Id: Ifcc099d7c0dfac3ed2c4e9e7a2d6e3d69b0ccb63 Reviewed-on: https://go-review.googlesource.com/c/go/+/427015 Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Keith Randall <khr@golang.org> Auto-Submit: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2022-05-11cmd/asm: require -p flagCherry Mui
CL 391014 requires the compiler to be invoked with the -p flag, to specify the package path. Later, CL 394217 makes the compiler to produce an unlinkable object file, so "go tool compile x.go" can still be used on the command line. This CL does the same for the assembler, requiring -p, otherwise generating an unlinkable object. No special case for the main package, as the main package cannot be only assembly code, and there is no way to tell if it is the main package from an assembly file. Now we guarantee that we always have an expanded package path in the object file. A later CL will delete the name expansion code in the linker. Change-Id: I8c10661aaea2ff794614924ead958d80e7e2487d Reviewed-on: https://go-review.googlesource.com/c/go/+/404298 Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2022-03-15cmd/asm: support -d=pctab flagCherry Mui
To debug PC data generation. Change-Id: Id7ac8d607cc27ad52db490bd758c3a768c3e1df2 Reviewed-on: https://go-review.googlesource.com/c/go/+/388015 Trust: Cherry Mui <cherryyz@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
2021-11-05cmd/{asm,compile,internal/obj}: add "maymorestack" supportAustin Clements
This adds a debugging hook for optionally calling a "maymorestack" function in the prologue of any function that might call morestack (whether it does at run time or not). The maymorestack function will let us improve lock checking and add debugging modes that stress function preemption and stack growth. Passes toolstash-check -all (except on js/wasm, where toolstash appears to be broken) Fixes #48297. Change-Id: I27197947482b329af75dafb9971fc0d3a52eaf31 Reviewed-on: https://go-review.googlesource.com/c/go/+/359795 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
2021-02-19cmd/asm, cmd/link, runtime: introduce FuncInfo flag bitsRuss Cox
The runtime traceback code has its own definition of which functions mark the top frame of a stack, separate from the TOPFRAME bits that exist in the assembly and are passed along in DWARF information. It's error-prone and redundant to have two different sources of truth. This CL provides the actual TOPFRAME bits to the runtime, so that the runtime can use those bits instead of reinventing its own category. This CL also adds a new bit, SPWRITE, which marks functions that write directly to SP (anything but adding and subtracting constants). Such functions must stop a traceback, because the traceback has no way to rederive the SP on entry. Again, the runtime has its own definition which is mostly correct, but also missing some functions. During ordinary goroutine context switches, such functions do not appear on the stack, so the incompleteness in the runtime usually doesn't matter. But profiling signals can arrive at any moment, and the runtime may crash during traceback if it attempts to unwind an SP-writing frame and gets out-of-sync with the actual stack. The runtime contains code to try to detect likely candidates but again it is incomplete. Deriving the SPWRITE bit automatically from the actual assembly code provides the complete truth, and passing it to the runtime lets the runtime use it. This CL is part of a stack adding windows/arm64 support (#36439), intended to land in the Go 1.17 cycle. This CL is, however, not windows/arm64-specific. It is cleanup meant to make the port (and future ports) easier. Change-Id: I227f53b23ac5b3dabfcc5e8ee3f00df4e113cf58 Reviewed-on: https://go-review.googlesource.com/c/go/+/288800 Trust: Russ Cox <rsc@golang.org> Trust: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-12-10cmd/go, cmd/asm: pass -linkshared to assembler for shared linkage buildsThan McIntosh
When the -linkshared build mode is in effect, the Go command passes the "-linkshared" command line option to the compiler so as to insure special handling for things like builtin functions (which may appear in a shared library and not the main executable). This patch extends this behavior to the assembler, since the assembler may also wind up referencing builtins when emitting a stack-split prolog. Fixes #43107. Change-Id: I56eaded79789b083f3c3d800fb140353dee33ba9 Reviewed-on: https://go-review.googlesource.com/c/go/+/276932 Trust: Than McIntosh <thanm@google.com> Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-10-20cmd/asm: rename "compiling runtime" flagThan McIntosh
Rename the assembler "-compilingRuntime" flag to "-compiling-runtime", to be more consistent with the flag style of other Go commands. Change-Id: I8cc5cbf0b9b34d1dd4e9fa499d3fec8c1ef10b6e Reviewed-on: https://go-review.googlesource.com/c/go/+/263857 Trust: Than McIntosh <thanm@google.com> Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-10-19cmd/dist,cmd/go: broaden use of asm macro GOEXPERIMENT_REGABIThan McIntosh
This extends a change made in https://golang.org/cl/252258 to the go command (to define an asm macro when GOEXPERIMENT=regabi is in effect); we need this same macro during the bootstrap build in order to build the runtime correctly. In addition, expand the set of packages where the macro is applied to {runtime, reflect, syscall, runtime/internal/*}, and move the logic for deciding when something is a "runtime package" out of the assembler and into cmd/{go,dist}, introducing a new assembler command line flag instead. Updates #27539, #40724. Change-Id: Ifcc7f029f56873584de1e543c55b0d3e54ad6c49 Reviewed-on: https://go-review.googlesource.com/c/go/+/262317 Trust: Than McIntosh <thanm@google.com> Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-09-17cmd/asm: make asm -S flag consistent with compile -S flagThan McIntosh
Change things so that the -S command line option for the assembler works the same as -S in the compiler, e.g. you can use -S=2 to get additional detail. Change-Id: I7bdfba39a98e67c7ae4b93019e171b188bb99a2d Reviewed-on: https://go-review.googlesource.com/c/go/+/255717 Trust: Than McIntosh <thanm@google.com> Run-TryBot: Than McIntosh <thanm@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com> TryBot-Result: Go Bot <gobot@golang.org>
2020-05-04[dev.link] cmd: delete old object supportCherry Zhang
We are not going to merge to master until Go 1.16 cycle. The old object support can go now. Change-Id: I93e6f584974c7749d0a0c2e7a96def35134dc566 Reviewed-on: https://go-review.googlesource.com/c/go/+/231918 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
2020-03-27[dev.link] all: merge branch 'master' into dev.linkCherry Zhang
The only merge conflict is the addition of -spectre flag on master and the addition of -go115newobj flag on dev.link. Resolved trivially. Change-Id: I5b46c2b25e140d6c3d8cb129acbd7a248ff03bb9
2020-03-23[dev.link] cmd/asm, cmd/compile: add back newobj flagCherry Zhang
Add back the newobj flag, renamed to go115newobj, for feature gating. The flag defaults to true. This essentially reverts CL 206398 as well as CL 220060. The old object format isn't working yet. Will fix in followup CLs. Change-Id: I1ace2a9cbb1a322d2266972670d27bda4e24adbc Reviewed-on: https://go-review.googlesource.com/c/go/+/224623 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
2020-03-13cmd/asm, cmd/compile, runtime: add -spectre=ret modeRuss Cox
This commit extends the -spectre flag to cmd/asm and adds a new Spectre mitigation mode "ret", which enables the use of retpolines. Retpolines prevent speculation about the target of an indirect jump or call and are described in more detail here: https://support.google.com/faqs/answer/7625886 Change-Id: I4f2cb982fa94e44d91e49bd98974fd125619c93a Reviewed-on: https://go-review.googlesource.com/c/go/+/222661 Reviewed-by: Keith Randall <khr@golang.org>
2020-03-10[dev.link] cmd/asm: new -p option, changes to DWARF generationThan McIntosh
Adds a new "-p" option to the assembler, for specifying the import path of the package being compiled. DWARF generation is now conditional on having a valid package path -- if we don't know the package path, then don't emit DWARF. This is intended to lay the groundwork for removing the various "patchDWARFname" hacks in the linker. Change-Id: I5f8315c0881791eb8fe1f2ba32f5bb0ae76f6b98 Reviewed-on: https://go-review.googlesource.com/c/go/+/222718 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org>
2019-11-11[dev.link] cmd/compile, cmd/asm: delete old object file format supportCherry Zhang
There are more cleanups to do, but I want to keep this CL mostly a pure deletion. Change-Id: Icd2ff0a4b648eb4adf3d29386542617e49620818 Reviewed-on: https://go-review.googlesource.com/c/go/+/206398 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-11-11[dev.link] cmd: reenable newobj mode by defaultCherry Zhang
Change-Id: I6e820a77c516363f350c2aad5bc17a2d7e7501e3 Reviewed-on: https://go-review.googlesource.com/c/go/+/206457 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-11-05[dev.link] cmd: default to old object file formatCherry Zhang
Flip back to the old object files for Go 1.14. Change-Id: I4ad499460fb7156b63fc63e9c6ea4f7099e20af2 Reviewed-on: https://go-review.googlesource.com/c/go/+/204098 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-10-16[dev.link] cmd: default to new object filesCherry Zhang
Switch the default to new object files. Internal linking cgo is disabled for now, as it does not work yet in newobj mode. Shared libraries are also broken. Disable some tests that are known broken for now. Change-Id: I8ca74793423861d607a2aa7b0d89a4f4d4ca7671 Reviewed-on: https://go-review.googlesource.com/c/go/+/200161 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jeremy Faller <jeremy@golang.org>
2019-10-02[dev.link] cmd/compile, cmd/asm: assign index to symbolsCherry Zhang
We are planning to use indices for symbol references, instead of symbol names. Here we assign indices to symbols defined in the package being compiled, and propagate the indices to the dependent packages in the export data. A symbol is referenced by a tuple, (package index, symbol index). Normally, for a given symbol, this index is unique, and the symbol index is globally consistent (but with exceptions, see below). The package index is local to a compilation. For example, when compiling the fmt package, fmt.Println gets assigned index 25, then all packages that reference fmt.Println will refer it as (X, 25) with some X. X is the index for the fmt package, which may differ in different compilations. There are some symbols that do not have clear package affiliation, such as dupOK symbols and linknamed symbols. We cannot give them globally consistent indices. We categorize them as non-package symbols, assign them with package index 1 and a symbol index that is only meaningful locally. Currently nothing will consume the indices. All this is behind a flag, -newobj. The flag needs to be set for all builds (-gcflags=all=-newobj -asmflags=all=-newobj), or none. Change-Id: I18e489c531e9a9fbc668519af92c6116b7308cab Reviewed-on: https://go-review.googlesource.com/c/go/+/196029 Reviewed-by: Than McIntosh <thanm@google.com>
2018-11-16cmd/asm: rename -symabis to -gensymabisAustin Clements
Currently, both asm and compile have a -symabis flag, but in asm it's a boolean flag that means to generate a symbol ABIs file and in the compiler its a string flag giving the path of the symbol ABIs file to consume. I'm worried about this false symmetry biting us in the future, so rename asm's flag to -gensymabis. Updates #27539. Change-Id: I8b9c18a852d2838099718f8989813f19d82e7434 Reviewed-on: https://go-review.googlesource.com/c/149818 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-11-12cmd/asm: add mode to collect symbol ABIsAustin Clements
This adds a -symabis flag that runs the assembler in a special mode that outputs symbol definition and reference ABIs rather than assembling the code. This uses a fast and somewhat lax parser because the go_asm.h definitions may not be available. For #27539. Change-Id: I248ba0ebab7cc75dcb2a90e82a82eb445da7e88e Reviewed-on: https://go-review.googlesource.com/c/147098 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
2017-10-06cmd/asm, cmd/cgo, cmd/compile, cmd/cover, cmd/link: use standard -V outputRuss Cox
Also add -V=full to print a unique identifier of the specific tool being invoked. This will be used for content-based staleness. Also sort and clean up a few of the flag doc comments. Change-Id: I786fe50be0b8e5f77af809d8d2dab721185c2abd Reviewed-on: https://go-review.googlesource.com/68590 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-08-24cmd/asm, go/build: invoke cmd/asm only once per packageJosh Bleecher Snyder
Prior to this CL, cmd/go invoked cmd/asm once for every assembly file. The exec and cmd/asm startup overhead dwarfed the actual time spent assembling. This CL adds support to cmd/asm to process multiple input files and uses it in cmd/go. This cuts 10% off the wall time for 'go build -a math'. Fixes #15680 Change-Id: I12d2ee2c817207954961dc8f37b8f2b09f835550 Reviewed-on: https://go-review.googlesource.com/27636 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
2016-02-24all: fix typos and spellingMartin Möhrmann
Change-Id: Icd06d99c42b8299fd931c7da821e1f418684d913 Reviewed-on: https://go-review.googlesource.com/19829 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-01-24cmd/asm: add -e flag (no limit on errors) to match compilerRuss Cox
Change-Id: I5b749c575e0ec78fb3c50d056899bd1fe5d91853 Reviewed-on: https://go-review.googlesource.com/18847 Reviewed-by: Rob Pike <r@golang.org>
2015-11-19cmd/asm: add doc.goRob Pike
There was no documentation produced by "go doc cmd/asm". Follow the style set by cmd/compile. Fixes #13148. Change-Id: I02e08ce2e7471f855bfafbbecee98ffdb7096995 Reviewed-on: https://go-review.googlesource.com/16997 Reviewed-by: Russ Cox <rsc@golang.org>
2015-05-21all: retire architecture letter in file names, public APIRuss Cox
This CL removes the remaining visible uses of the "architecture letter" concept. (They are no longer in tool names nor in source directory names.) Because the architecture letter concept is now gone, delete GOCHAR from "go env" output, and change go/build.ArchChar to return an error always. The architecture letter is still used in the compiler and linker sources as a clumsy architecture enumeration, but that use is not visible to Go users and can be cleaned up separately. Change-Id: I4d97a38f372003fb610c9c5241bea440d9dbeb8d Reviewed-on: https://go-review.googlesource.com/10289 Reviewed-by: Rob Pike <r@golang.org>
2015-04-10cmd/internal/obj/x86, cmd/internal/ld, cmd/6l: 6g/asm -dynlink accesses ↵Michael Hudson-Doyle
global data via a GOT Change-Id: I49862e177045369d6c94d6a58afbdace4f13cc96 Reviewed-on: https://go-review.googlesource.com/8237 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-03-04liblink, cmd/6l: re-enable -shared on amd64Michael Hudson-Doyle
The creation of liblink and subsequent introduction of more explicit TLS handling broke 6l's (unsupported) -shared flag. This change adds -shared flags to cmd/asm and 6g and changes liblink to generate shared- library compatible instruction sequences when they are passed, and changes 6l to emit the appropriate ELF relocation. A proper fix probably also requires go tool changes. Fixes #9652. Change-Id: I7b7718fe7305c802ac994f4a5c8de68cfbe6c76b Reviewed-on: https://go-review.googlesource.com/4321 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-02-25cmd/go: make asm the first assemblerRob Pike
verifyAsm is still on, but this CL changes the order to asm then 6a. Before, it was 6a then asm, but that meant that any bugs in asm for bad input would be prevented from happening because 6a would catch them. Now asm gets first crack, as it must. Also implement the -trimpath flag in asm. It's necessary and trivial. Change-Id: Ifb2ab870de1aa1b53dec76a78ac697a0d36fa80a Reviewed-on: https://go-review.googlesource.com/5850 Reviewed-by: Russ Cox <rsc@golang.org>
2015-02-02[dev.cc] cmd/asm: fix a few minor issuesRob Pike
Fix one place where semicolons were not recognized and fix the pattern match for the syntax of some pseudo ops. Also clean up a couple of unreachable code pieces. There is still an undiagnosed bit difference betwen old and new .6 files. TBD. With these fixes, asm can successfully compile and test the entire tree. (Verified by turn off verifyAsm in cmd/go make.bash cp $GOROOT/bin/asm $GOROOT/pkg/tool/darwin_amd64/6a go test -short std ) Change-Id: I91ea892098f76ef4f129fd2530e0c63ffd8745a9 Reviewed-on: https://go-review.googlesource.com/3688 Reviewed-by: Russ Cox <rsc@golang.org>
2015-01-29[dev.cc] cmd/asm: set the flags to production settings (turn off debug)Rob Pike
Set -S to false and add -debug to control the other debugging print. Change-Id: I864866c3d264a33e6dd0ce12a86a050a5fe0f875 Reviewed-on: https://go-review.googlesource.com/3453 Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2015-01-23[dev.cc] cmd/asm: add lex internal packageRob Pike
Add the lexing code for the new portable assembler. It is internal to the assembler, so lives in a subdirectory of cmd/asm/internal. Its only new dependency is the flags package for the assembler, so add that too; it's trivial. That package manages the command-line flags in a central place. The lexer builds on text/scanner to lex the input, including doing a Plan 9-level implementation of the C preprocessor. Change-Id: I262e8717b8c797010afaa5051920839906c0dd19 Reviewed-on: https://go-review.googlesource.com/3195 Reviewed-by: Russ Cox <rsc@golang.org>