cc golang-tools, bcc golang-nuts

Michael Matloob will be well-placed to advise here.

On Wed, 29 Jan 2020 at 22:12, adam.welc via golang-nuts
<golang-nuts@googlegroups.com> wrote:
>
> I am trying to analyze a large application using Go's static analysis 
> support. I am using the "packages" package to load all application packages 
> using the Load function.  Unfortunately the application is really big and the 
> list of patterns that the Load function takes the second parameter is really 
> long. This causes a problem on Mac OS as in this case it leads to the 
> "argument list too long" error popping up after the Load function is called. 
> The reason for it is that internally, the Load function executes "go list" 
> command passing it the list of patterns as arguments, which leads to 
> exceeding the limit established by Mac OS (which, as far as I can tell, 
> cannot be changed).
>
> The usual workaround for this problem is to split the argument list and apply 
> a given function incrementally to each list fragment - in this case it would 
> mean calling the Load function multiple times with a different subset of the 
> patterns list at each invocation. This, however, does not quite work, as it 
> messes up the SSA representation that I need to generate afterwards using 
> AllPackages function from the "ssautil" package. The AllPackages function 
> constructs a program that contains a "file set" containing all files 
> constituting the program. As far as I can tell, the only way to access this 
> file set during analysis is via the program itself. And this is the gist of 
> the problem, incremental application of the Load function creates a "file 
> set" per increment, and the resulting program during SSA construction will 
> assign only one to the program, making the remaining ones inaccessible during 
> analysis.
>
> I can't think of a viable workaround here (one that I considered is trying to 
> use the loader package but it's deprecated and does not support modules), but 
> perhaps someone will have an advice on how to proceed here...
>
> Adam
>
> --
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/3dad4625-1b92-4438-b753-c63153c15848%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CACoUkn4tGpyXtuRShujDVQDY_-SRDXMqVaqFnf%3DzbCojUX5Q_w%40mail.gmail.com.

Reply via email to