runtime: save r11 in ARM addmoduledata
runtime: save r11 in ARM addmoduledata

R11 is callee-save in the C ABI, but the temporary register in the Go
ABI. Currently it's being clobbered by runtime.addmoduledata, which
has to follow the C ABI. The observed effect of this was that
dl_open_worker was returning to a bad PC because after it failed to
restore its SP because it was using R11 as a frame pointer.

Fix this by saving R11 around addmoduledata.

Fixes #19674.

Change-Id: Iaacbcc76809a3aa536e9897770831dcbcb6c8245
Reviewed-on: https://go-review.googlesource.com/47831
Run-TryBot: Austin Clements <7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com>
TryBot-Result: Gobot Gobot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Cherry Zhang <d62e63aa42ce272d7b6a5055d97e942b33a34679@google.com>

akutz/go,akutz/go,Cofyc/go,polyverse-security/go,codestation/go,codestation/go,vsekhar/elastic-go,nawawi/go,Cofyc/go,nawawi/go,cloudflare/go,polyverse-security/go,CAFxX/go,vsekhar/elastic-go,golang/go,josharian/go,polyverse-security/go,akutz/go,josharian/go,josharian/go,golang/go,vsekhar/elastic-go,cloudflare/go,cloudflare/go,golang/go,josharian/go,vsekhar/elastic-go,CAFxX/go,polyverse-security/go,CAFxX/go,christopher-henderson/Go,codestation/go,nawawi/go,codestation/go,vsekhar/elastic-go,golang/go,akutz/go,CAFxX/go,Cofyc/go,Cofyc/go,nawawi/go,CAFxX/go,CAFxX/go,polyverse-security/go,cloudflare/go,codestation/go,vsekhar/elastic-go,Cofyc/go,golang/go,akutz/go,josharian/go,codestation/go,CAFxX/go,cloudflare/go,golang/go,polyverse-security/go,polyverse-security/go,nawawi/go,josharian/go,akutz/go,Cofyc/go,akutz/go,nawawi/go,CAFxX/go,golang/go,cloudflare/go,akutz/go,cloudflare/go,vsekhar/elastic-go,cloudflare/go,nawawi/go,josharian/go,josharian/go,codestation/go,Cofyc/go,golang/go,nawawi/go,Cofyc/go,polyverse-security/go,codestation/go,vsekhar/elastic-go