func getArch()

in rule/rule.go [858:900]


func getArch(arch string) (string, uint32, error) {
	realArch := arch
	switch strings.ToLower(arch) {
	case "b64":
		runtimeArch, err := getRuntimeArch()
		if err != nil {
			return "", 0, err
		}

		switch runtimeArch {
		case "aarch64", "x86_64", "ppc64", "ppc64le", "s390x":
			realArch = runtimeArch
		default:
			return "", 0, fmt.Errorf("cannot use b64 on %v", runtimeArch)
		}
	case "b32":
		runtimeArch, err := getRuntimeArch()
		if err != nil {
			return "", 0, err
		}

		switch runtimeArch {
		case "arm", "i386", "s390":
			realArch = runtimeArch
		case "aarch64":
			realArch = "arm"
		case "x86_64":
			realArch = "i386"
		case "ppc64", "ppc64le":
			realArch = "ppc"
		case "s390x":
			realArch = "s390"
		default:
			return "", 0, fmt.Errorf("cannot use b32 on %v", runtimeArch)
		}
	}

	archValue, found := reverseArch[realArch]
	if !found {
		return "", 0, fmt.Errorf("unknown arch '%v'", arch)
	}
	return realArch, archValue, nil
}